#引入django框架中http模块中HttpResponse函数
from django.http import HttpResponse
from django.shortcuts import render
from django.shortcuts import redirect
from myDjango.models import Users
from myDjango.models import Cake
from myDjango.models import Order
import math


#设置处理函数
def index(request):
    #name1=request.GET.get('name')
    if request.session.get('uid',None):
        #如果结果为True 则通过uid查询Users表唯一值中的username
       name1 = Users.objects.filter(id=request.session['uid'])[0].username
    else:
        name1 = None
    keyword = request.GET.get('keyword')
    if keyword:
        goods=Cake.objects.filter(name__contains=keyword)
    else:
        goods = Cake.objects.all()
    #给前端传递的页码列表 pagelist【1，2，3，4.....】 len()方法 获取列表长度   math.ceil()向上取整
    #range(start,end) start包含，end不包含  可以循环显示，自动生成
    pagelist = range(1,math.ceil(len(goods)/5)+1)
    page = request.GET.get('page')
    if page:
        page = int(page)
    else:
        page = 1
    goods = goods[5*(page-1):5*page]     #截取数据查询的结果前5  不包含5 列表切片
    return render(request,"index.html",{"name1":name1,'pagelist':pagelist,'goods':goods})

def login(request):
    if request.POST:
        username = request.POST.get('username')
        pwd = request.POST.get('pwd')
        result = Users.objects.filter(username=username)
        if result:
            if result[0].userpwd == pwd:
                request.session['uid'] = result[0].id
                #if request[0].admin == 1:
                return redirect('/index/?name='+result[0].username)
                #else:
                    #return render(request,"adminIndex.html")
            else:
                return render(request,"login.html")
        else:
            return render(request,"register.html")

    return render(request, "login.html")


def nav(request):
    one=[
        {'学院设置':[{'理工农学院':['计算机科学与技术','园林艺术','土木工程']},
                 {'医学院':['护理','医学研究']},
                 {'文艺法学院':['民族舞蹈','音乐','法学']},
                 {'经济贸易学院':['会计学','电商','金融学']}]},
        {'师资力量':[{'师资力量':['师资力量2','师资力量2','师资力量2']},
                 {'师资力量':['师资力量2','师资力量2']},
                 {'师资力量':['师资力量2','师资力量2']},
                 {'师资力量':['师资力量2']}]},
        {'教育教学':[{'教育教学':['教育教学2','教育教学2','教育教学2']},
                 {'教育教学':['教育教学2','教育教学2','教育教学2']},
                 {'教育教学':['教育教学2','教育教学2']},
                 {'教育教学':['教育教学2']}]},
        {'科学研究':[{'科学研究':['科学研究2','科学研究2','科学研究2']},
                 {'科学研究':['科学研究2','科学研究2']},
                 {'科学研究':['科学研究2']}]}
    ]
    return render(request,"nav.html",{'one':one})

def register(request):
    if request.POST:
        username = request.POST.get("username")
        userpwd = request.POST.get("userpwd")
        # 将用户类进行实例化 对象
        user3 = Users(username=username, userpwd=userpwd)
        # 数据保存
        user3.save()
        return render(request,'login.html')
    return render(request, 'register.html')
def adminUser(request):
    if request.GET:
        id = request.GET.get('id')
        Users.objects.get(id=id).delete()
    users = Users.objects.all()
    return render(request,'adminUser.html',{'users':users})

def detail(request):
    id = request.GET.get('id')
    info = Cake.objects.filter(goodsid=id)
    car_gid = request.GET.get('gid')
    if car_gid:
        if request.session.get('uid', None):
            uid = request.session['uid']
            #间接数据库操作，通过封装好的数据模型
            #先查询数据Cake表中goodsid对应商品信息数据，再插入购物车中
            cake = Cake.objects.filter(goodsid=car_gid)[0]
            Order.objects.create(cid=None,cake=cake,buy_count=1,uid=uid)
            info = Cake.objects.filter(goodsid=car_gid)
        else:
            return redirect('/login/')
    return render(request, 'detail.html', {'info': info})
def shopping(request):
    if request.session.get('uid',None):
        # 获取session中的uid
        uid = request.session['uid']
        #数据库操作 查询购物车表
        order = Order.objects.filter(uid=uid)
        #数据库查询结果 Order[{cid,cake,buy_count,uid}....]
        goods = [] #设定响应前端页面的所有购物车商品数据的列表
        for item in order:
            #通过商品id 查询商品数据表
            #good = Cake.objects.filter(goodsid=item.cake)[0]
            good = item.cake
            # Cake {id,name,detail,price,count}
            good.buy_count = item.buy_count # 人为增加buy_count字段
            good.all_price = good.buy_count * good.price
            good.allprice = good.all_price + good.all_price
            goods.append(good)
        pagelist = range(1, math.ceil(len(goods) / 5) + 1)
        page = request.GET.get('page')
        if page:
            page = int(page)
        else:
            page = 1
        goods = goods[5 * (page - 1):5 * page]  # 截取数据查询的结果前5  不包含5 列表切片
        if request.GET:
            id = request.GET.get('id')
            goods.get(id=id).delete()
        return render(request,'shopping.html',{'goods':goods,'pagelist':pagelist})
    else:
        return redirect('/login/')
def adminIndex(request):
    return render(request,'adminIndex.html')

def loginout(request):
    # 删除session对象中uid键值对 实质是对数据库中session表修改session_data的字段值
    #request.session.clear()
    #del request.session['uid']
    #request.session.pop('uid')
    #删除数据库中session表中对应的记录/数据
    #request.session.delete(request.session.session_key)
    request.session.flush()
    return redirect('/index/')